/**
 * A，D是合法的
 * B，C是不合法的
 * 可以实际操作一下，但是更加方便的做法是，看pop的时候，push的个数是否大于等于push的个数
 */

#include<stdbool.h>
#include<stdio.h>

/**
 * 判断一个stack操作序列是否合法
 * 只有push 和 pop 操作，没有具体的元素顺序要求
 */
bool isValid(int arr[],int n){
    int push=0,pop=0;
    for(int i=0;i<n;i++){
        if(arr[i]==1){
            push++;
        }else{
            pop++;
        }
        if(pop>push){//每次循环都要判断二者的个数是否符合要求
            return false;
        }
    }
    //还要保证pop和push次数相等（终态为空stack）
    if(pop!=push){
        return false;
    }
    return true;
}